<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title></title>
</head>

<body>
    <script type="text/javascript">
        // var a = 1; //全局
        // function fn(a) { //局部：函数的参数相当于是函数内部的变量(局部变量) var a = 1
        //     console.log(a); //1//局部
        //     a = 2; //局部
        //     console.log(a); //2 //局部
        // }
        // fn(a); //全局的a
        // console.log(a); //全局的  1




        // var a = 1; //全局的
        // function fn() {
        //     console.log(a); //局部 undefined
        //     var a = 2; //局部
        //     console.log(a); //局部  2
        // }
        // fn()
        // console.log(a); //1 全局的



        // var a = 1; //全局的

        // function fn() {
        //     console.log(a); //全局的  1
        //     a = 2 //全局的
        //     console.log(a); //全局的  2
        // }
        // fn()
        // console.log(a); //全局的  2



        // function fn() {
        //     a = 2; //变量前面没有加var，变成全局的变量，不能进行预编译的。
        //     console.log(a); //2
        // }
        // fn()
        // console.log(a); //全局的  2




        // (function() {
        //     var a = b = 3;
        //     //b = 3;  //b全局变量，没有var
        //     //var a = b;  //var a = 3 局部

        // })();

        // console.log(typeof a); //undefiend  a无法获取
        // console.log(typeof b); //number
        // console.log(typeof a !== 'undefined'); //false
        // console.log(typeof b !== 'undefined'); //true



        // var x = 0;
        // var y = 0;
        // var z = 0;

        // function add(n) {
        //     n = n + 1;
        //     return n;
        // }
        // y = add(x);
        // console.log(y); //undefined

        // function add(n) { //预编译，函数重名，后面覆盖前面的。函数没有return,返回undefined
        //     n = n + 3;
        // }
        // z = add(x);
        // console.log(z); //undefined
    </script>
</body>

</html>